// Copyright (C) 1953-2022 NUDT
// Verilog module name - onebit_signal_synchronize
// Version: V4.1.0.20221205
// Created:
//         by - fenglin 
////////////////////////////////////////////////////////////////////////////
// Description:
//         onebit single synchronize
///////////////////////////////////////////////////////////////////////////

`timescale 1ns/1ps

module onebit_signal_synchronize
(
       i_src_clk,
       i_src_rst_n,
	   
       i_dst_clk,
       i_dst_rst_n,	   
       
       i_src_signal,
       o_dst_signal   
);

// I/O
// clk & rst
input                  i_src_clk;
input                  i_src_rst_n; 

input                  i_dst_clk;
input                  i_dst_rst_n; 
//port type
input                  i_src_signal;  
output reg             o_dst_signal; 


reg [1:0] rv_src_signal;
always@(posedge i_src_clk or negedge i_src_rst_n) begin
  if (!i_src_rst_n) begin
    rv_src_signal    <= 2'b0;
  end
  else begin
    rv_src_signal    <= {rv_src_signal[0],i_src_signal};
  end
end

always@(posedge i_dst_clk or negedge i_dst_rst_n) begin
  if (!i_dst_rst_n) begin
    o_dst_signal    <= 1'b0;
  end
  else begin
    o_dst_signal <= i_src_signal | rv_src_signal[0] | rv_src_signal[1];
  end
end
endmodule